package com.houger.ddd.seckill.infra.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.*;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import java.io.Serial;
import java.time.LocalDateTime;

/**
 * 活动模板基础数据表
 *
 * @author Administrator
 * @version $$ Revision:1.0.0, $$ Date: 2022-02-25 18:48:04 $$
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ToString
@DynamicInsert
@DynamicUpdate
@Entity
@SuperBuilder
@Table(name = "activity_template_basic")
@NoArgsConstructor
@AllArgsConstructor
public class ActivityTemplateBasic extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 活动状态；1 未启用，2 未开始，3 进行中，4 已结束，5 已停用，6 待审核，7 审核驳回，8 已取消,9-已终止
     */
    private Integer templateStatus;

    /**
     * 活动模板代码
     */
    private String templateCode;

    /**
     * 活动模板名称
     */
    private String templateName;

    /**
     * 活动类型；1-秒杀；0-未知
     */
    private Integer templateType;

    /**
     * 活动模板类型
     */
    private String templateTypeClass;

    /**
     * 活动标签
     */
    private String activityTag;

    /**
     * 开始时间
     */
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    private LocalDateTime endTime;

    /**
     * 应用端
     */
    private String applyPlatforms;

    /**
     * 适用门店类型 1:全部门店,2:指定门店,3:排除门店
     */
    private Integer applyShopType;

    /**
     * 门店数据group id
     */
    private Long applyShopGroupId;

    /**
     * 活动排序
     */
    private Integer activitySort;

    /**
     * 是否可叠加优惠；0-不可叠加，1-可叠加
     */
    private Integer superposeDiscount;

    /**
     * 活动所属区域（以英文逗号分隔开）
     */
    private String regionCodes;

    /**
     * 审核id
     */
    private Long applyId;

    /**
     * 角色类型 0总部运营 1区域运营，默认-1（其他）
     */
    private Integer roleType;

    /**
     * 审核人
     */
    private String auditBy;

    /**
     * 审核时间
     */
    private LocalDateTime auditTime;

    /**
     * 审核备注
     */
    private String auditMemo;

}
